//
//  ZMXHelper.m
//  OpenSource
//
//  Created by QIANFENG on 14-9-13.
//  Copyright (c) 2014年 LZXuan. All rights reserved.
//

#import "CJJHelper.h"

@implementation CJJHelper


+ (NSDate *)convertToDateFrom:(NSString *)dateString{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd"];
    return [formatter dateFromString:dateString];
}
+ (NSString *)stringFromDate:(NSDate*)aDate{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];
    NSString *dateString = [formatter stringFromDate:aDate];
    return dateString;
}

+ (NSString *)dateStringFormNumberString:(NSString *)str{
    double t = [str doubleValue];
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:t/1000];//获取距离1970 的时间
    NSDateFormatter *fm = [[NSDateFormatter alloc] init];
//    fm.dateFormat = @"MM.dd";
    fm.dateFormat = @"yyyy-MM-dd";
    return [fm stringFromDate:date];
}

+ (CGFloat)textHeightFromString:(NSString *)textStr width:(CGFloat)width fontSize:(CGFloat)fontSize{
    //最好判断一下 sdk 的版本
    
    //下面的方法是ios7的
    /**
     *  根据字符串的内容 和固定的宽度来 求高度
     *
     *  @param size  给一个预设的大小 宽度写成固定的 高度写成float 的最大值
     
     *  @param option 第二个参数用于设置 是否以段为基准 不以base line为准
     *
     第三个参数对文字进行设置
     *  @return 真实的大小
     */
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        NSDictionary *dict = @{
                               NSFontAttributeName:[UIFont systemFontOfSize:fontSize]
                               };
        CGRect frame = [textStr boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine attributes:dict context:nil];
        return frame.size.height;
    }else{
        //iOS7 之前的写法
        CGSize size = [textStr sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(width, CGFLOAT_MAX) lineBreakMode:NSLineBreakByCharWrapping];
        return size.height;
    }
}
+ (CGFloat)textWidthFromString:(NSString *)textStr height:(CGFloat)height fontSize:(CGFloat)fontSize{
    //最好判断一下 sdk 的版本
    
    //下面的方法是ios7的
    /**
     *  根据字符串的内容 和固定的宽度来 求高度
     *
     *  @param size  给一个预设的大小 宽度写成固定的 高度写成float 的最大值
     
     *  @param option 第二个参数用于设置 是否以段为基准 不以base line为准
     *
     第三个参数对文字进行设置
     *  @return 真实的大小
     */
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        NSDictionary *dict = @{
                               NSFontAttributeName:[UIFont systemFontOfSize:fontSize]
                               };
        CGRect frame = [textStr boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, height) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine attributes:dict context:nil];
        return frame.size.width;
    }else{
        //iOS7 之前的写法
        CGSize size = [textStr sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(CGFLOAT_MAX, height) lineBreakMode:NSLineBreakByCharWrapping];
        return size.width;
    }
}

//获取屏幕高度
+ (CGSize)getScreenSize{
    return [[UIScreen mainScreen] bounds].size;
}

//判断是否是iOS7的设备
+ (BOOL)isiOS7{
    return [[[UIDevice currentDevice] systemVersion] doubleValue] >= 7.0;
}

+ (NSString *)trimmingWhitespace:(NSString *)str{
    return  [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}


/**
 *  保存登陆的信息
 *
 *  @param dict 登陆后返回的字典
 */
+ (void)saveInformation:(NSDictionary *)dict key:(NSString *)key
{
    
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:dict  forKey:key];
    [userDefaults synchronize];
}
/**
 *  获取本地保存登录信息
 *
 *  @param key <#key description#>
 */
+ (id)getMessageFromKey:(NSString *)key;
{
    id value = [[NSUserDefaults standardUserDefaults] objectForKey:key];
    return value;
}


+ (NSString *)convertFrom:(double)num
{
    return [NSString stringWithFormat:@"%f",num]?[NSString stringWithFormat:@"%f",num]:@"";
}

+ (NSString*)dictionaryToJson:(id)dic

{
    
    NSError *parseError = nil;
    
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];
    
    return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    
}
+ (id)objectFromJson:(NSString *)dicStr

{
    NSError *parseError = nil;
    
    NSData *dataStr = [dicStr dataUsingEncoding:NSUTF8StringEncoding];
    id  objectJson = [NSJSONSerialization JSONObjectWithData:dataStr options:NSJSONReadingMutableContainers error:&parseError];
    
    return objectJson;
    
}

+ (NSString *)checkString:(NSString *)str
{
    
    return (str)?str:@"";
}


//获取缓存文件的路径  沙盒/Library/Caches/MyCache/XXXXXX

//+ (NSString *)getFullCachePathFromUrl:(NSString *)url{
//    NSString *myCachePath = [NSHomeDirectory() stringByAppendingString:@"/Library/Caches/MyCache"];
//    NSFileManager *fileManager = [NSFileManager defaultManager];
//    //检测 目录 MyCache是否存在
//    if (![fileManager fileExistsAtPath:myCachePath]) {//不存在 则创建一个新的
//        [fileManager createDirectoryAtPath:myCachePath withIntermediateDirectories:YES attributes:nil error:nil];
//    }
//    //对网址地址 进行 md5 加密处理产生一个新的字符串
////    url = [url MD5Hash];
//    //拼接路径
//    myCachePath = [myCachePath stringByAppendingFormat:@"/%@",url];
//    
//    return myCachePath;
//}
//
////判断缓存文件是否有效
////timer 设置 有效时间   一般 缓存文件 设置有效时间60*60s 一小时
//
//+ (BOOL)isOutTimeFromUrl:(NSString *)url time:(double)timer{
//    //获取 url 对应的缓存文件路径
//    NSString *filePath = [CJJHelper getFullCachePathFromUrl:url];
//    //获取文件属性字典
//    NSDictionary *dict = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
//    //获取最近一次的修改时间
//    NSDate *pastDate = [dict fileModificationDate];
//    //获取pastDate 距离当前时间的 时间差 s
//    NSTimeInterval subTimer = [pastDate timeIntervalSinceNow];
//    if (subTimer <= 0) {
//        subTimer = -subTimer;
//    }
//    if (subTimer > timer) {//这个差值 是否超过有效时间
//        return YES;//超时
//    }else{
//        return NO;//没有超时
//    }
//}

@end
